home *** CD-ROM | disk | FTP | other *** search
Wrap
package com.simeda.ActiveViewer; import java.io.DataInputStream; import java.io.IOException; import java.io.OutputStream; import javax.microedition.io.Connector; import javax.microedition.io.StreamConnection; class rfbProto { static final String versionMsg = "RFB 003.003\n"; static final int ConnFailed = 0; static final int NoAuth = 1; static final int VncAuth = 2; static final int VncAuthOK = 0; static final int VncAuthFailed = 1; static final int VncAuthTooMany = 2; static final int FramebufferUpdate = 0; static final int SetColourMapEntries = 1; static final int Bell = 2; static final int ServerCutText = 3; static final int SetPixelFormat = 0; static final int FixColourMapEntries = 1; static final int SetEncodings = 2; static final int FramebufferUpdateRequest = 3; static final int KeyEvent = 4; static final int PointerEvent = 5; static final int ClientCutText = 6; static final int EncodingRaw = 0; static final int EncodingCopyRect = 1; static final int EncodingRRE = 2; static final int EncodingCoRRE = 4; static final int EncodingHextile = 5; static final int HextileRaw = 1; static final int HextileBackgroundSpecified = 2; static final int HextileForegroundSpecified = 4; static final int HextileAnySubrects = 8; static final int HextileSubrectsColoured = 16; StreamConnection conn; String host; int port; // $FF: renamed from: is java.io.DataInputStream DataInputStream field_0; // $FF: renamed from: os java.io.OutputStream OutputStream field_1; boolean inNormalProtocol = false; int serverMajor; int serverMinor; String desktopName; int framebufferWidth; int framebufferHeight; int bitsPerPixel; int depth; boolean bigEndian; boolean trueColour; int redMax; int greenMax; int blueMax; int redShift; int greenShift; int blueShift; int updateNRects; int updateRectX; int updateRectY; int updateRectW; int updateRectH; int updateRectEncoding; int copyRectSrcX; int copyRectSrcY; byte[] eventBuf = new byte[72]; int eventBufLen; int pointerMask = 0; rfbProto(String var1, int var2) throws IOException { this.host = var1; this.port = var2; this.conn = (StreamConnection)Connector.open("socket://" + this.host + ":" + this.port); this.field_0 = this.conn.openDataInputStream(); this.field_1 = this.conn.openDataOutputStream(); } void close() { try { this.conn.close(); this.field_0.close(); this.field_1.close(); } catch (Exception var2) { ((Throwable)var2).printStackTrace(); } } void readVersionMsg() throws IOException { byte[] var1 = new byte[12]; this.field_0.readFully(var1); if (var1[0] == 82 && var1[1] == 70 && var1[2] == 66 && var1[3] == 32 && var1[4] >= 48 && var1[4] <= 57 && var1[5] >= 48 && var1[5] <= 57 && var1[6] >= 48 && var1[6] <= 57 && var1[7] == 46 && var1[8] >= 48 && var1[8] <= 57 && var1[9] >= 48 && var1[9] <= 57 && var1[10] >= 48 && var1[10] <= 57 && var1[11] == 10) { this.serverMajor = (var1[4] - 48) * 100 + (var1[5] - 48) * 10 + (var1[6] - 48); this.serverMinor = (var1[8] - 48) * 100 + (var1[9] - 48) * 10 + (var1[10] - 48); } else { throw new IOException("Host " + this.host + " port " + this.port + " is not an RFB server"); } } void writeVersionMsg() throws IOException { byte[] var1 = new byte[12]; byte[] var2 = "RFB 003.003\n".getBytes(); System.arraycopy(var2, 0, var1, 0, 12); this.field_1.write(var1); } int readAuthScheme() throws IOException { int var1 = this.field_0.readInt(); switch (var1) { case 0: int var2 = this.field_0.readInt(); byte[] var3 = new byte[var2]; this.field_0.readFully(var3); throw new IOException(new String(var3)); case 1: case 2: return var1; default: throw new IOException("Unknown authentication scheme from RFB server " + var1); } } void writeClientInit() throws IOException { this.field_1.write(1); } void readServerInit() throws IOException { this.framebufferWidth = this.field_0.readUnsignedShort(); this.framebufferHeight = this.field_0.readUnsignedShort(); this.bitsPerPixel = this.field_0.readUnsignedByte(); this.depth = this.field_0.readUnsignedByte(); this.bigEndian = this.field_0.readUnsignedByte() != 0; this.trueColour = this.field_0.readUnsignedByte() != 0; this.redMax = this.field_0.readUnsignedShort(); this.greenMax = this.field_0.readUnsignedShort(); this.blueMax = this.field_0.readUnsignedShort(); this.redShift = this.field_0.readUnsignedByte(); this.greenShift = this.field_0.readUnsignedByte(); this.blueShift = this.field_0.readUnsignedByte(); byte[] var1 = new byte[3]; this.field_0.read(var1); int var2 = this.field_0.readInt(); byte[] var3 = new byte[var2]; this.field_0.readFully(var3); this.desktopName = new String(var3); this.inNormalProtocol = true; } int readServerMessageType() throws IOException { return this.field_0.read(); } void readFramebufferUpdate() throws IOException { this.field_0.readByte(); this.updateNRects = this.field_0.readUnsignedShort(); } void readFramebufferUpdateRectHdr() throws IOException { this.updateRectX = this.field_0.readUnsignedShort(); this.updateRectY = this.field_0.readUnsignedShort(); this.updateRectW = this.field_0.readUnsignedShort(); this.updateRectH = this.field_0.readUnsignedShort(); this.updateRectEncoding = this.field_0.readInt(); if (this.updateRectX + this.updateRectW > this.framebufferWidth || this.updateRectY + this.updateRectH > this.framebufferHeight) { throw new IOException("Framebuffer update rectangle too large: " + this.updateRectW + "x" + this.updateRectH + " at (" + this.updateRectX + "," + this.updateRectY + ") (FW: " + this.framebufferWidth + ", FH: " + this.framebufferHeight + ")"); } } void readCopyRect() throws IOException { this.copyRectSrcX = this.field_0.readUnsignedShort(); this.copyRectSrcY = this.field_0.readUnsignedShort(); } String readServerCutText() throws IOException { byte[] var1 = new byte[3]; this.field_0.read(var1); int var2 = this.field_0.readInt(); byte[] var3 = new byte[var2]; this.field_0.readFully(var3); return new String(var3); } void writeFramebufferUpdateRequest(int var1, int var2, int var3, int var4, boolean var5) throws IOException { System.out.println("Requesting update for x=" + var1 + " y=" + var2 + " w=" + var3 + " h=" + var4 + " incremental=" + var5); byte[] var6 = new byte[]{3, (byte)(var5 ? 1 : 0), (byte)(var1 >> 8 & 255), (byte)(var1 & 255), (byte)(var2 >> 8 & 255), (byte)(var2 & 255), (byte)(var3 >> 8 & 255), (byte)(var3 & 255), (byte)(var4 >> 8 & 255), (byte)(var4 & 255)}; this.field_1.write(var6); } void writeSetPixelFormat(int var1, int var2, boolean var3, boolean var4, int var5, int var6, int var7, int var8, int var9, int var10) throws IOException { byte[] var11 = new byte[]{0, 0, 0, 0, (byte)var1, (byte)var2, (byte)(var3 ? 1 : 0), (byte)(var4 ? 1 : 0), (byte)(var5 >> 8 & 255), (byte)(var5 & 255), (byte)(var6 >> 8 & 255), (byte)(var6 & 255), (byte)(var7 >> 8 & 255), (byte)(var7 & 255), (byte)var8, (byte)var9, (byte)var10, 0, 0, 0}; this.field_1.write(var11); } void writeFixColourMapEntries(int var1, int var2, int[] var3, int[] var4, int[] var5) throws IOException { byte[] var6 = new byte[6 + var2 * 6]; var6[0] = 1; var6[2] = (byte)(var1 >> 8 & 255); var6[3] = (byte)(var1 & 255); var6[4] = (byte)(var2 >> 8 & 255); var6[5] = (byte)(var2 & 255); for(int var7 = 0; var7 < var2; ++var7) { var6[6 + var7 * 6] = (byte)(var3[var7] >> 8 & 255); var6[6 + var7 * 6 + 1] = (byte)(var3[var7] & 255); var6[6 + var7 * 6 + 2] = (byte)(var4[var7] >> 8 & 255); var6[6 + var7 * 6 + 3] = (byte)(var4[var7] & 255); var6[6 + var7 * 6 + 4] = (byte)(var5[var7] >> 8 & 255); var6[6 + var7 * 6 + 5] = (byte)(var5[var7] & 255); } this.field_1.write(var6); } void writeSetEncodings(int[] var1, int var2) throws IOException { byte[] var3 = new byte[4 + 4 * var2]; var3[0] = 2; var3[2] = (byte)(var2 >> 8 & 255); var3[3] = (byte)(var2 & 255); for(int var4 = 0; var4 < var2; ++var4) { var3[4 + 4 * var4] = (byte)(var1[var4] >> 24 & 255); var3[5 + 4 * var4] = (byte)(var1[var4] >> 16 & 255); var3[6 + 4 * var4] = (byte)(var1[var4] >> 8 & 255); var3[7 + 4 * var4] = (byte)(var1[var4] & 255); } this.field_1.write(var3); } void writeClientCutText(String var1) throws IOException { byte[] var2 = new byte[8 + var1.length()]; var2[0] = 6; var2[4] = (byte)(var1.length() >> 24 & 255); var2[5] = (byte)(var1.length() >> 16 & 255); var2[6] = (byte)(var1.length() >> 8 & 255); var2[7] = (byte)(var1.length() & 255); byte[] var3 = var1.getBytes(); System.arraycopy(var3, 0, var2, 8, var1.length()); this.field_1.write(var2); } void writePointerEvent(int var1, int var2, int var3) throws IOException { byte[] var4 = new byte[6]; if (var3 == 0) { this.pointerMask = 0; } if (var3 == 1) { this.pointerMask = 1; } if (var3 == 2) { this.pointerMask = 2; } if (var3 == 3) { this.pointerMask = 4; } this.eventBufLen = 0; if (var1 < 0) { var1 = 0; } if (var2 < 0) { var2 = 0; } this.eventBuf[this.eventBufLen++] = 5; this.eventBuf[this.eventBufLen++] = (byte)this.pointerMask; this.eventBuf[this.eventBufLen++] = (byte)(var1 >> 8 & 255); this.eventBuf[this.eventBufLen++] = (byte)(var1 & 255); this.eventBuf[this.eventBufLen++] = (byte)(var2 >> 8 & 255); this.eventBuf[this.eventBufLen++] = (byte)(var2 & 255); this.field_1.write(this.eventBuf, 0, this.eventBufLen); } void writeKeyEvent(int var1, boolean var2) throws IOException { this.eventBufLen = 0; this.eventBuf[this.eventBufLen++] = 4; this.eventBuf[this.eventBufLen++] = (byte)(var2 ? 1 : 0); this.eventBuf[this.eventBufLen++] = 0; this.eventBuf[this.eventBufLen++] = 0; this.eventBuf[this.eventBufLen++] = (byte)(var1 >> 24 & 255); this.eventBuf[this.eventBufLen++] = (byte)(var1 >> 16 & 255); this.eventBuf[this.eventBufLen++] = (byte)(var1 >> 8 & 255); this.eventBuf[this.eventBufLen++] = (byte)(var1 & 255); this.field_1.write(this.eventBuf, 0, this.eventBufLen); } }